export default {
    methods: {
        /**
         * 修改配置表单项的值
         * @param {Array} items 所有配置项列表
         * @param {String} prop 配置项的唯一key值
         * @param {*} props
         */
        setFormItemProp(prop, key, value) {
            if (Array.isArray(this.formItems) && this.formItems.length) {
                for (let i = 0; i < this.formItems.length; i++) {
                    const element = this.formItems[i]
                    element.forEach(v => {
                        if (v.prop === prop) {
                            v[key] = value
                        }
                    })
                }
            } else {
                return
            }
        },
        /**
         * 子组件向父组件传递事件
         * @param {String} parentName 父组件的名称
         * @param {String} eventName 派发的事件名称
         * @param {*} params  子组件要传递的参数
         */
        dispatch(parentName, eventName, params) {
            var parent = this.$parent || this.$root
            var name = parent.$options.name
            /** 层层向上查找 直到找到对应名称的父组件 */
            while (parent && (!name || name !== parentName)) {
                parent = parent.$parent
                if (parent) {
                    name = parent.$options.name
                }
            }
            if (parent) {
                /** 父组件执行相应事件 */
                parent.$emit.apply(parent, [eventName, params])
            }
        }
    }
}
